package com.zh.chat.monitor;

import java.util.Timer;

/**
 * 监视文件更新（使用线程扫描方式）
 * @author 逍遥の剑仙
 * 2013-3-3
 */
public class FileMonitor {

    // 文件监视者
    private static FileMonitor instance = new FileMonitor();
    // 定时任务
    private Timer time;

    // 使用单例
    private FileMonitor() {
        time = new Timer();
    }

    /**
     * 获取文件监控者
     * 
     * @return 文件监控者
     */
    public static FileMonitor getInstance() {
        return instance;
    }

    /**
     * 注册监听
     * 
     * @param listener 监听接口
     * @param filename 被监听文件
     * @param period 扫描周期（毫秒）
     */
    public FileMonitorTask addFileChangeListener(FileChangeListener listener,
            String filename, long period) {
        FileMonitorTask task = new FileMonitorTask(listener, filename);
        this.time.schedule(task, period, period);
        return task;
    }
    /**
     * 终止文件监听器
     * @param task 文件监听任务
     */
    public void removeFileChangeListener(FileMonitorTask task) {
    	task.cancel();
    	task = null;
	}
}
